package xyz.xtt.exchange.service;

import java.util.List;
import java.util.Map;

import xyz.xtt.asset.api.enums.AssetTypeEnum;
import xyz.xtt.exchange.vo.AuditCheckResult;
import xyz.xtt.exchange.vo.BlindBoxDetailVO;
import xyz.xtt.exchange.vo.BlindBoxListVO;
import xyz.xtt.exchange.vo.MintRequestExRequest;
import xyz.xtt.user.client.response.UserInfoResponse;

/**
 * <p>
 * nft基础信息 服务类 </>
 *
 * @author gzm
 * @date 2024/11/20/
 */
public interface NftService {
	/**
	 * 获取nft详情
	 */
//	public NftDetailsVo getNftDetailsById(String goodsId);

	/**
	 * 获取我的nft列表
	 */
//	public List<NftListVo> getNftListByUid(String uid, Integer currPage, Integer pageSize, String queryType, int businessType, int orderType);

//	public List<NftListVo> getNftListByUidV2(String uid, Integer currPage, Integer pageSize, String queryType, int businessType, int orderType);

	/**
	 * 获取系列nft列表
	 */
//	public List<NftListVo> getCollectionNftListById(Long collectionId, Integer currPage, Integer pageSize);

	/**
	 * 数藏查询
	 * 
	 * @param type      类型
	 * @param searchKey TODO
	 * @param curr      当前页
	 * 
	 * @return
	 */
//	List<NftListVo> list(Integer currPage, String type, String searchKey);

	/**
	 * 铸造时数据校验
	 *
	 * @param appUserInfo
	 * @param assetType
	 * @param displayUri
	 * @param checkText
	 */
	AuditCheckResult mintBeforeCheck(UserInfoResponse userInfo, AssetTypeEnum assetType, String displayUri, String checkText);

	/**
	 * 增加权益详情
	 * 
	 * @param goodsId
	 * @param uid
	 * @return xyz.xtt.exchange.vo.NftInterestDetailsVo
	 */
//	NftInterestDetailsVo getNftDetailsInterestById(String goodsId, String uid);

//	NftInterestDetailsVo getNftDetails(String goodsId, String uid);

	/**
	 * 创建铸造token
	 * 
	 * @param uid
	 * @return
	 */
	String mintToken(String uid);

	/**
	 * 铸造
	 * 
	 * @param uid
	 * @param mintRequestVo
	 * @return
	 */
	Long mintEx(String uid, MintRequestExRequest mintRequestVo);

	String getAiImgToImg(Long uId, String imgUrl, String style);

	/**
	 * 铸作权重铸
	 * 
	 * @param uid
	 * @param reMintRequest
	 * @return
	 */
//	MintResponse reMint(String uid, @Valid ReMintRequest reMintRequest);

	List<BlindBoxListVO> getBlindBoxList(String uid, int boxType, Integer currPage, Integer pageSize, int secondType);

	BlindBoxDetailVO getBlindBoxDetailInfo(String uid, String goodsId);

	Map<Integer, String> getCompetitionArea();

}
